Subject: Editor's Draft DLSw spec. (2 of 8)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Mon, 11 Jul 94 13:37:35 PDT

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 1
X-Sun-Content-Length: 22

Here is part 2 of 8.

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw2.txt
X-Sun-Content-Lines: 531
X-Sun-Content-Length: 27103

RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   information messages.  The information message header is 16 bytes long, and the
   control message header is 72 bytes long.  The first sixteen bytes of the
   control message header are identical to the information message header.

   (EDITOR's Note: I ONLY COUNT 70 BYTES, IS 72 CORRECT AND DO I NEED TO SHOW
   ADDITION RESERVED BYTES AT THE END???)

     CONTROL MESSAGES (72 Bytes) (zero based offsets below shown in deicimal (xx)
)
    +--------------------------------+--------------------------------+
4   | (00)Version Number             | (01) Header Length (= 72)      |
    +--------------------------------+--------------------------------+
    | (02) Message Length                                             |
    +--------------------------------+--------------------------------+
    | (04) Remote Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (08) Remote DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (12) Reserved Field                                             |
    +--------------------------------+--------------------------------+
    | (14) Message Type              | (15) Flow Control Byte         |
    +--------------------------------+--------------------------------+
    | (16) Protocol ID               | (17) Header Number             |
    +--------------------------------+--------------------------------+
4   | (18) Reserved                                                   |
    +--------------------------------+--------------------------------+
    | (20) Largest Frame Size        | (21) SSP Flags                 |
    +--------------------------------+--------------------------------+
    | (22) Reserved                  | (23) Message Type              |
    +--------------------------------+--------------------------------+
    | (24) Target MAC Address  (non-canonical format)                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (30) Origin MAC Address  (non-canonical format)                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |            .                                 .                  |
    +--------------------------------+--------------------------------+
    | (36) Origin Link SAP           | (37) Target Link SAP           |
    +--------------------------------+--------------------------------+
    | (38) Frame Direction           | (39) Reserved                  |

A.K. Bartky                                                  [Page 10]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

    +--------------------------------+--------------------------------+
4   | (40) Reserved                                                   |
    +--------------------------------+--------------------------------+
    | (42) DLC Header Length                                          |
    +--------------------------------+--------------------------------+
    | (44) Origin DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (48) Origin Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (52) Origin Transport ID                                        |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (56) Target DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (60) Target Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (64) Target Transport ID                                        |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (68) Reserved Field                                             |
    +--------------------------------+--------------------------------+
             (Even Byte)                      (Odd Byte)

A.K. Bartky                                                  [Page 11]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

     INFORMATION MESSAGE (16 Bytes)
    +--------------------------------+--------------------------------+
    | (00) Version                   | (01) Header Length (= 16)      |
    +--------------------------------+--------------------------------+
    | (02) Message Length                                             |
    +--------------------------------+--------------------------------+
    | (04) Remote Data Link Correlator                                |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (08) Remote DLC Port ID                                         |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | (12) Reserved                                                   |
    +--------------------------------+--------------------------------+
    | (14) Message Type              | (15) Flow Control Byte         |
    +--------------------------------+--------------------------------+
             (Even Byte)                      (Odd Byte)

   The Version Number is set to x'31' (ASCII '1'), indicating a numeric value of
   49.  This is used to indicate DLSw version 1.

   The Header Length is x'00 48', indicating a numeric value of 72 bytes.

   The Header Number is x'01', indicating a value of one.

   The Flow Control Byte is described in section 5.

   The Frame Direction field is set to x'01' for frames sent from the origin DLS
   to the target DLS, and is set to x'02' for frames sent from the target DLS to
   the origin DLS.

     Note:  The Remote Data Link Correlator and Remote DLC Port ID are set equal
     to the Target Data Link Correlator and Target DLC Port ID if the Frame
     Direction field is set to x'01', and are set equal to the Origin Data Link
     Correlator and Origin DLC Port ID if the Direction Field is set to x'02'.

   The Protocol ID field is set to x'42', indicating a numeric value of 66.

   The Message Length field defines the number of bytes within the data field
   following the header.  Note that this value is specified in two different
   fields of the message header.

   The DLC Header Length is set to zero for SNA and is set to x'23' for NetBIOS
   datagrams, indicating a length of 35 bytes.  This includes the Access Control

A.K. Bartky                                                  [Page 12]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   (AC) field, the Frame Control (FC) field, Destination MAC Address (DA), the
   Source MAC Address (SA), the Routing Information (RI) field (padded to 18
   bytes), the Destination link SAP (DSAP), the Source link SAP (SSAP), and the
   LLC control field (UI).

   The values for the Message Type field are defined in a later section. Note that
   this value is specified in two different fields of the message header.

   3  The SSP Flags field contains additional information related to
   3  the SSP message.  The flags are defined as follows:
   3
   3      Bit(s)      Name    Meaning
   3      ---------   -----   -------
   3      x... ....   SSPex   1 = explorer message (CANUREACH and ICANREACH)
   3      .xxx xxxx           not used

   Reserved fields are set to zero upon transmission and should be ignored upon
   receipt.

3.2. Address Parameters

   A data link is defined as a logical association between the two end stations
   using Data Link Switching.  It is identified by a Data Link ID (14 bytes)
   consisting of the pair of attachment addresses associated with each end system.
   Each attachment address is represented by the concatenation of the MAC address
   (6 bytes) and the LLC address (1 byte).  All MAC addresses are expressed in
   non-canonical (Token-Ring) format.

     DATA LINK ID   (14 Bytes)
    +--------------------------------+--------------------------------+
    | Target MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin MAC Address                                              |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Origin Link SAP                | Target Link SAP                |
    +--------------------------------+--------------------------------+

   An end-to-end circuit is identified by a pair of Circuit ID's.  A Circuit ID is
   a 64 bit number that identifies the DLC circuit within a single DLSw.  It
   consists of a DLC Port ID (4 bytes), and a Data Link Correlator (4 bytes).

A.K. Bartky                                                  [Page 13]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   This value is unique in a single DLSw and is assigned locally.  The pair of
   Circuit ID's along with the identifiers of the Data Link Switches, uniquely
   identify a single end-to-end circuit.  Each DLSw must keep a table of these
   Circuit ID pairs, one for the local end of the circuit and the other for the
   remote end of the circuit.  In order to identify which Data Link Switch
   originated the establishment of a circuit, the terms, origin DLSw and target
   DLSw, will be employed in this document.

     CIRCUIT ID   (8 Bytes)
    +--------------------------------+--------------------------------+
    | DLC Port ID                                                     |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+
    | Data Link Correlator                                            |
    +- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - -+
    |                                                                 |
    +--------------------------------+--------------------------------+

   The Origin Transport ID and the Target Transport ID fields in the message
   header are used to identify the individual TCP/IP port on a Data Link Switch.
   The values have only local significance.  However, each Data Link Switch is
   required to reflect the values contained in these two fields, along with the
   associated values for DLC Port ID and the Data Link Correlator, when returning
   a message to the other Data Link Switch.

   The following figure shows the use of the addressing parameters during the
   establishment of an end-to-end connection.  The CANUREACH_cs, ICANREACH, and
   REACH_ACK messages all carry the Data Link ID, consisting of the MAC and Link
   SAP addresses associated with the two end stations.  Upon receipt of a
   CANUREACH_cs message, the target DLS starts a data link for each port, thereby
   obtaining a Data Link Correlator.  If the target station can be reached, an
   ICANREACH message is returned to the origin DLS containing the Target Circuit
   ID parameter.  Upon receipt, the origin DLS starts a data link and returns the
   Origin Circuit ID to the target DLS within the REACH_ACK message.  If the
   REACH_ACK message is not successfully received, the target Data Link Switch can
   obtain the Origin Circuit ID from a subsequent message (i.e., CONTACT,
   XIDFRAME, or DGRMFRAME).

A.K. Bartky                                                  [Page 14]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

        +------------+                                  +------------+
        |Disconnected|                                  |Disconnected|
        +------------+     CANUREACH_cs (Data Link ID)  +------------+
              ------------------------------------------------->
                ICANREACH_cs (Data Link ID, Target Circuit ID)
              <------------------------------------------------
            REACH_ACK (Data Link ID, Origin Cir ID, Target Cir ID)
              ------------------------------------------------->
        +------------+                                  +------------+
        |Circuit Est.|                                  |Circuit Est.|
        +------------+                                  +------------+
            XIDFRAME (Data Link ID, Origin Cir ID, Target Cir ID)
              <------------------------------------------------>
             CONTACT (Data Link ID, Origin Cir ID, Target Cir ID)
              ------------------------------------------------->
            CONTACTED (Data Link ID, Origin Cir ID, Target Cir ID)
              <-------------------------------------------------
        +------------+                                  +------------+
        | Connected  |                                  | Connected  |
        +------------+                                  +------------+
               INFOFRAME (Remote Circuit ID = Target Circuit ID)
              ------------------------------------------------->
               INFOFRAME (Remote Circuit ID = Origin Circuit ID)
              <-------------------------------------------------

                     Figure 3.  DLS Circuits and Connections

   During the exchange of the XIDFRAME, CONTACT, and CONTACTED messages, the pair
   of Circuit ID parameters is included in the message format along with the DATA
   LINK ID parameter.  Once the connection has been established, the INFOFRAME
   messages are exchanged with the shorter header.  This header contains only the
   Circuit ID associated with the remote DLS.  The Remote Data Link Correlator and
   the Remote DLC Port ID are set equal to the Data Link Correlator and the DLC
   Port ID that are associated with the origin or target Data Link Switch,
   dependent upon the direction of the packet.

3.3 Correlators

   The use and contents of the Data Link Correlator, Port ID and Transport ID
   fields in SSP messages is an implementation choice.  These fields have local
   significance only and the values received from a partner DLSw must not be
   interpreted by the DLSw that receives them.

   However for correct interoperation, all implementations must obey the following
   rules on the assignment and fixing of these correlator fields for each
   transport connection or circuit:

   The Transport ID fields are learned from the first SSP message exchanged with a
   DLSw partner (the Capabilities exchange).  This field should not be varied by a

A.K. Bartky                                                  [Page 15]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   DLSw after the capabilities exchange and must be reflected to the partner DLSw
   in every SSP control message.

   The Target Data Link Correlator, Target Port ID and Target Transport ID must
   remain the same once the Target DLSw has sent the ICANREACH_cs for a given
   circuit.  The Origin DLSw must store the values specified in the ICANREACH_cs
   and use these on all subsequent SSP messages for this circuit.

   The Origin DLSw must allow these fields to vary until the ICANREACH_cs is
   received.  Each SSP message issued for a circuit must reflect the values
   specified by the Target DLSw in the last SSP message for this circuit received
   by the Origin DLSw.  Binary zero should be used if no such message has yet been
   received for a given circuit (apart from the Target Transport ID which will
   have been learnt as specified above).

   The Origin Data Link Correlator, Origin Port ID and Origin Transport ID must
   remain the same once the Origin DLSw has issued the REACH_ACK for a given
   circuit.  The Target DLSw must store the values specified in the REACH_ACK and
   use these on all subsequent SSP messages for this circuit.

   The Target DLSw must allow these fields to vary until the REACH_ACK is
   received.  Each SSP message issued for a circuit must reflect the values
   specified by the Origin DLSw in the last SSP message for this circuit received
   by the Target DLSw.  Binary zero should be used if no such message has yet been
   received for a given circuit (apart from the Origin Transport ID which will
   have been learnt as specified above).

   For the purposes of correlator exchange, explorer messages form a separate
   circuit.  Both DLSw partners must reflect the last received correlator values
   as specified above.  However correlators learned on explorer messages need not
   be carried over to a subsequent circuit setup attempt.  In particular, the
   Origin DLSw may elect to use the same values for the Origin Data Link
   Correlator and Origin Port ID when it issues a CANUREACH_cs after receiving an
   ICANREACH_ex or NETBIOS_NR_ex.  However the Target DLSw must not assume that
   the CANUREACH_cs will specify any of the Target Data Link Correlator or Target
   Port ID that were exchanged on the explorer frames.

3.4. Largest Frame Size Field

   The Largest Frame Size (LF Size) field in the SSP Control Header is used to
   carry the LF Size bits across the DLSw connection.  This should be used to
   ensure that the two end-stations always negotiate a frame size to be used on a
   circuit that does not require the Origin and Target DLSw partners to re-segment
   frames.

   This field is valid on CANUREACH_*, ICANREACH_*, NETBIOS_NQ_ex, NETBIOS_NR_ex,
   XIDFRAME, DATAFRAME and DGRMFRAME messages only.  The contents of this field
   should be ignored on all other frames.

A.K. Bartky                                                  [Page 16]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   Every DLSw forwarding a SSP frame to its DLSw partner must ensure that the
   contents of this frame reflect the minimum capability of the route to its local
   end-station or any limit imposed by the DLSw itself.

   The bit-wise definition of this field is as follows:

       7   6   5   4   3   2   1   0
      --------------------------------
     | c | r | b | b | b | e | e | e |
      --------------------------------

       c   .   .   .   .   .   .   .  Origin DLSw "don't care" flag
                                      (significant on messages from
                                       Origin to Target DLSw only)

                                      0=fail circuit if route obtained
                                        requires a smaller LF size
                                      1=don't fail the circuit but return
                                        the LF size obtained even if it is
                                        smaller

       .   r   .   .   .   .   .   .  Reserved
       .   .   b   .   .   .   .   .  Largest Frame Bit Base
       .   .   .   b   .   .   .   .  Largest Frame Bit Base
       .   .   .   .   b   .   .   .  Largest Frame Bit Base
       .   .   .   .   .   e   .   .  Largest Frame Bit Extended
       .   .   .   .   .   .   e   .  Largest Frame Bit Extended
       .   .   .   .   .   .   .   e  Largest Frame Bit Extended

               <----- LF Bits ----->

   Refer to IEEE 802.1D Standard, Annex C for encoding of Largest Frame base and
   extended bit values.

   The Origin DLSw "don't care" flag informs a Target DLSw that chooses to
   reply to *_ex messages on the basis of cached information that it
   may safely return a smaller LF Size on the ICR_cs frame if it has had to choose
   an alternative route on which to initialize the circuit.  If this bit is set to
   1, the Origin DLSw takes responsibility to ensure that the end-stations
   negotiate a suitable frame size for the circuit.  If this bit is set to 0, the
   Target DLSw must not reply to the CUR_cs if it cannot obtain a route to the
   Target end station that support an LF Size at least as large as that specified
   in the CUR_cs frame.

3.5. Message Types

A.K. Bartky                                                  [Page 17]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   The following table lists the protocol data units that are exchanged between
   Data Link Switches.  All values not listed are reserved for potential use in
   follow-on releases.

    Command            Function                            Type     flags
    -------            --------                           -------   -----
3   CANUREACH_ex       Can U Reach Station-explorer        x'03'    SSPex
3   CANUREACH_cs       Can U Reach Station-circuit start   x'03'
3   ICANREACH_ex       I Can Reach Station-explorer        x'04'    SSPex
3   ICANREACH_cs       I Can Reach Station-circuit start   x'04'
    REACH_ACK          Reach Acknowledgment                x'05'
    DGRMFRAME          Datagram Frame (see Note 1)         x'06'
    XIDFRAME           XID Frame                           x'07'
    CONTACT            Contact Remote Station              x'08'
    CONTACTED          Remote Station Contacted            x'09'
    RESTART_DL         Restart Data Link                   x'10'
    DL_RESTARTED       Data Link Restarted                 x'11'
3   ENTER_BUSY         Enter Busy (see Note 2)             x'0C'
3   EXIT_BUSY          Exit Busy (see Note 2)              x'0D'
    INFOFRAME          Information (I) Frame               x'0A'
    HALT_DL            Halt Data Link                      x'0E'
    DL_HALTED          Data Link Halted                    x'0F'
3   NETBIOS_NQ_ex      NETBIOS Name Query-explorer         x'12'    SSPex
3   NETBIOS_NQ_cs      NETBIOS Name Query-circuit setup    x'12'
3   NETBIOS_NR_ex      NETBIOS Name Recognized-explorer    x'13'    SSPex
3   NETBIOS_NR_cs      NETBIOS Name Recog.-circuit setup   x'13'
    DATAFRAME          Data Frame (see Note 1)             x'14'
1   HALT_DL_NOACK      Halt Data Link with no Ack          x'19'
    NETBIOS_ANQ        NETBIOS Add Name Query              x'1A'
    NETBIOS_ANR        NETBIOS Add Name Response           x'1B'
    CAPABILITES_EX     Capabilities Exchange               x'20'
    IFCM               Independant Flow Control Message    x'21'
1   TEST_CIRCUIT_REQ   Test Circuit Request                x'7A'
1   TEST_CIRCUIT_RSP   Test Circuit Response               x'7B'

3   Note 1: Both the DGRMFRAME and DATAFRAME messages are used to carry
3           information received by the DLC entity within UI frames.
3           The DGRMFRAME message is addressed according to a pair of
3           Circuit IDs, while the DATAFRAME message is addressed
3           according to a Data Link ID, being composed of a pair of MAC
3           addresses and a pair of link SAP addresses.  The latter is
3           employed prior to the establishment of an end-to-end circuit
3           when Circuit IDs have yet to be established or during circuit
3           restart when Data Links are reset.
3
3   Note 2: These messages are not used for the DLSw Standard but may
3           be used by older DLSw implementations.  They are listed
3           here for informational purposes.  These messages were added after
            publication of RFC 1434 and were deleted in this standard

A.K. Bartky                                                  [Page 18]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

            (adaptive pacing is now used instead).

   For the exchange of NetBIOS control messages, the entire DLC header is carried
   as part of the message unit.  This includes the MAC header, with the routing
   information field padded to 18 bytes, and the LLC header.  The following
   message types are affected:  NETBIOS_NQ, NETBIOS_NR, NETBIOS_ANQ, NETBIOS_ANR,
   and DATAFRAME when being used by NetBIOS systems.  The routing information in
   the DLC header is not used by the remote Data Link Switch upon receiving the
   above five messages.

A.K. Bartky                                                  [Page 19]